package com.example.demo.service;

import com.example.demo.model.Organization;
import java.util.List;
import java.util.Map;

/**
 * 组织架构服务接口
 */
public interface OrganizationService {
    
    /**
     * 根据ID查询组织
     */
    Organization findById(Integer orgId);
    
    /**
     * 根据父级ID查询组织列表
     */
    List<Organization> findByParentId(Integer parentId);
    
    /**
     * 根据组织类型查询组织列表
     */
    List<Organization> findByType(String orgType);
    
    /**
     * 根据父级ID和组织类型查询组织列表
     */
    List<Organization> findByParentIdAndType(Integer parentId, String orgType);
    
    /**
     * 创建组织
     */
    Organization create(Organization organization);
    
    /**
     * 更新组织
     */
    Organization update(Organization organization);
    
    /**
     * 删除组织
     */
    boolean deleteById(Integer orgId);
    
    /**
     * 查询所有组织
     */
    List<Organization> findAll();

    /**
     * 获取组织的完整层级结构
     * @param orgId 组织ID
     * @return 包含学校、院系、专业、班级信息的Map
     */
    Map<String, Organization> getOrganizationHierarchy(Integer orgId);
    
    /**
     * 获取组织及其所有子组织的树形结构
     * @param orgId 根组织ID
     * @return 组织树形结构
     */
    List<Organization> getOrganizationStructure(Integer orgId);
} 